昨天我們認識了 kubernetes 基礎架構,由 Cluster, Master Node, Worker Nodes 構成。今天我們要來了解一下 Node 裏實際最小工作單位 Pod,以及用來訪問隨著 Master 調度可能改變 ip address 的 Service。
Pod 是 Kubernetes 下最小工作單位,分布在不同的 Nodes 中,由 Master 管理與調度。
因 containers 共享該 Pod 的資源,因此一般來說一個 Pod 在實務上,僅會放入一個 app container (常見多容器情境:filebeat, istio)。不論是 container-to-container 或是 pod-to-pod,要交換資料都可以透過兩裝方式進行,網路或掛載實體。
負責調度 pods 的機制為 controller,在 nodes 間調度並且依據 deployment 的描述,利用 API Server 監控 pod 的運行狀況,若 pod 因資源不足或程式崩壞,而導致 pod 數量低於指定數量,controller 會負責重啟的動作。
Kubernetes 的 Service 是用來控制 pods 對外溝通的接口,這是由 Pods 會被 Master 在不同 Node 間調度,導致 Pods ip address 更換,Service 接口因應而生。且 Service 提供 LoadBalancer,協助外部請求在 Pods 間進行負載平衡。
幾種不同的 Service type
Service 提供的抽象方法來暴露出我們的服務,並且實現了我們最在意的負載平衡機制,透過 labels
我們可以輕鬆的將我們的 app Pods 結合 Service,控制 app 暴露的程度。
下一篇我們會介紹用來建立 Pods 的 .yaml描述檔,並且在本機建立一個微型的 minikube,方便我們進行練習與測試。